(defun foo(x &optional y &key z) 
  (list x y z))

(defun foo1 (&rest rest &key a b c) ( list rest a b c))

